package Day31_Threads.demo311;

/*
多线程
1.什么是进程与线程？
进程：程序的基本执行实体：每一个正在运行的软件都是一个进程
线程：是操作系统能够进行的运算调度最小的单位。被包含在进程中，是进程的实际运作单位，线程简单理解就是软件中的多个独立运行的功能
如果小白在一条流水线上每隔10分钟要搬一键货物，而搬货物很快就能搬完，可以给小白去搬多条流水线的货物
如果有多线程，CPU能够在多个线程之间来回切换，把等待的空闲时间利用起来从而提高程序运行效率
比如拷贝大文件使用多线程来完成：在这期间可以做其他事情。原神启动时背景音乐，图片，加载文件同时在做事情

2.什么是并发与并行
并发：在同一时刻，有多个指令在单个CPU上"交替"执行:比如你现在一边写笔记一边看视频，但是你只会一次做一件事（Java中允许应用程序并发运行多个执行线程）
并行：在同一时刻，有多个指令在多个CPU上"同时"执行：我的电脑是四核8线程：代表电脑能够同时运行8条线程
在计算机中，并发和并行很有可能同时都在发生

多线程的 实现方式一：继承Thread类，如果想拥有一条线程，就创建它的实现类并且开启它就可以咯
3.创建如何自己的线程类？
4.使用自己的线程类的最基本的流程？
5.如何给自己的线程设定名字？
*/
public class Demo311 {
    public static void main(String[] args) {
        System.out.println("3.创建自己的线程类，继承与Thread类，实现run方法即可");
        System.out.println("4.创建线程对象，并调用start方法开启线程");
        MyThread mt1 = new MyThread();
        MyThread mt2 = new MyThread();
        System.out.println("5.使用Thread类中的setName方法给线程起个名字：方便在线程的run方法中调用getName获取名字以区分线程");
        mt1.setName("线程1");
        mt2.setName("线程2");
        mt1.start();
        mt2.start();
    }
}

